⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple.html

📁 perl教程
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>XML::Simple - Easy API to maintain XML</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',2);</script>
<h1><a>XML::Simple - Easy API to maintain XML</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#quick_start">QUICK START</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<ul>

		<li><a href="#xmlin__"><code>XMLin()</code></a></li>
		<li><a href="#xmlout__"><code>XMLout()</code></a></li>
		<li><a href="#caveats">Caveats</a></li>
	</ul>

	<li><a href="#options">OPTIONS</a></li>
	<ul>

		<li><a href="#attrindent____1___out__handy">AttrIndent =&gt; 1 <em># out - handy</em></a></li>
		<li><a href="#cache______cache_schemes_____in__advanced">Cache =&gt; [ cache schemes ] <em># in - advanced</em></a></li>
		<li><a href="#contentkey_____keyname____in_out__seldom_used">ContentKey =&gt; 'keyname' <em># in+out - seldom used</em></a></li>
		<li><a href="#datahandler____code_ref___in__sax_only">DataHandler =&gt; code_ref <em># in - SAX only</em></a></li>
		<li><a href="#forcearray____1___in__important">ForceArray =&gt; 1 <em># in - important</em></a></li>
		<li><a href="#forcearray______names_____in__important">ForceArray =&gt; [ names ] <em># in - important</em></a></li>
		<li><a href="#forcecontent____1___in__seldom_used">ForceContent =&gt; 1 <em># in - seldom used</em></a></li>
		<li><a href="#grouptags______grouping_tag____grouped_tag_____in_out__handy">GroupTags =&gt; { grouping tag =&gt; grouped tag } <em># in+out - handy</em></a></li>
		<li><a href="#handler____object_ref___out__sax_only">Handler =&gt; object_ref <em># out - SAX only</em></a></li>
		<li><a href="#keeproot____1___in_out__handy">KeepRoot =&gt; 1 <em># in+out - handy</em></a></li>
		<li><a href="#keyattr______list_____in_out__important">KeyAttr =&gt; [ list ] <em># in+out - important</em></a></li>
		<li><a href="#keyattr______list_____in_out__important">KeyAttr =&gt; { list } <em># in+out - important</em></a></li>
		<li><a href="#noattr____1___in_out__handy">NoAttr =&gt; 1 <em># in+out - handy</em></a></li>
		<li><a href="#noescape____1___out__seldom_used">NoEscape =&gt; 1 <em># out - seldom used</em></a></li>
		<li><a href="#noindent____1___out__seldom_used">NoIndent =&gt; 1 <em># out - seldom used</em></a></li>
		<li><a href="#nosort____1___out__seldom_used">NoSort =&gt; 1 <em># out - seldom used</em></a></li>
		<li><a href="#normalisespace____0___1___2___in__handy">NormaliseSpace =&gt; 0 | 1 | 2 <em># in - handy</em></a></li>
		<li><a href="#nsexpand____1___in_out_handy__sax_only">NSExpand =&gt; 1 <em># in+out handy - SAX only</em></a></li>
		<li><a href="#numericescape____0___1___2___out__handy">NumericEscape =&gt; 0 | 1 | 2 <em># out - handy</em></a></li>
		<li><a href="#outputfile_____file_specifier____out__handy">OutputFile =&gt; &lt;file specifier&gt; <em># out - handy</em></a></li>
		<li><a href="#parseropts______xml__parser_options_____in__don_t_use_this">ParserOpts =&gt; [ XML::Parser Options ] <em># in - don't use this</em></a></li>
		<li><a href="#rootname_____string____out__handy">RootName =&gt; 'string' <em># out - handy</em></a></li>
		<li><a href="#searchpath______list_____in__handy">SearchPath =&gt; [ list ] <em># in - handy</em></a></li>
		<li><a href="#suppressempty____1________undef___in_out__handy">SuppressEmpty =&gt; 1 | '' | undef <em># in+out - handy</em></a></li>
		<li><a href="#valueattr______names_____in__handy">ValueAttr =&gt; [ names ] <em># in - handy</em></a></li>
		<li><a href="#valueattr______element____attribute__________in_out__handy">ValueAttr =&gt; { element =&gt; attribute, ... } <em># in+out - handy</em></a></li>
		<li><a href="#variables______name____value_____in__handy">Variables =&gt; { name =&gt; value } <em># in - handy</em></a></li>
		<li><a href="#varattr_____attr_name____in__handy">VarAttr =&gt; 'attr_name' <em># in - handy</em></a></li>
		<li><a href="#xmldecl____1_or_xmldecl_____string____out__handy">XMLDecl =&gt; 1  or  XMLDecl =&gt; 'string'  <em># out - handy</em></a></li>
	</ul>

	<li><a href="#optional_oo_interface">OPTIONAL OO INTERFACE</a></li>
	<li><a href="#strict_mode">STRICT MODE</a></li>
	<li><a href="#sax_support">SAX SUPPORT</a></li>
	<li><a href="#environment">ENVIRONMENT</a></li>
	<li><a href="#error_handling">ERROR HANDLING</a></li>
	<li><a href="#examples">EXAMPLES</a></li>
	<li><a href="#where_to_from_here">WHERE TO FROM HERE?</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
	<li><a href="#copyright">COPYRIGHT</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>XML::Simple - Easy API to maintain XML (esp config files)</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
    <span class="keyword">use</span> <span class="variable">XML::Simple</span><span class="operator">;</span>
</pre>
<pre>
    <span class="keyword">my</span> <span class="variable">$ref</span> <span class="operator">=</span> <span class="variable">XMLin</span><span class="operator">(</span><span class="operator">[</span><span class="operator">&lt;</span><span class="variable">xml</span> <span class="variable">file</span> <span class="keyword">or</span> <span class="variable">string</span><span class="operator">&gt;</span><span class="operator">]</span> <span class="operator">[</span><span class="operator">,</span> <span class="operator">&lt;</span><span class="variable">options</span><span class="operator">&gt;</span><span class="operator">]</span><span class="operator">);</span>
</pre>
<pre>
    <span class="keyword">my</span> <span class="variable">$xml</span> <span class="operator">=</span> <span class="variable">XMLout</span><span class="operator">(</span><span class="variable">$hashref</span> <span class="operator">[</span><span class="operator">,</span> <span class="operator">&lt;</span><span class="variable">options</span><span class="operator">&gt;</span><span class="operator">]</span><span class="operator">);</span>
</pre>
<p>Or the object oriented way:</p>
<pre>
    <span class="keyword">require</span> <span class="variable">XML::Simple</span><span class="operator">;</span>
</pre>
<pre>
    <span class="keyword">my</span> <span class="variable">$xs</span> <span class="operator">=</span> <span class="variable">XML::Simple</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">options</span><span class="operator">);</span>
</pre>
<pre>
    <span class="keyword">my</span> <span class="variable">$ref</span> <span class="operator">=</span> <span class="variable">$xs</span><span class="operator">-&gt;</span><span class="variable">XMLin</span><span class="operator">(</span><span class="operator">[</span><span class="operator">&lt;</span><span class="variable">xml</span> <span class="variable">file</span> <span class="keyword">or</span> <span class="variable">string</span><span class="operator">&gt;</span><span class="operator">]</span> <span class="operator">[</span><span class="operator">,</span> <span class="operator">&lt;</span><span class="variable">options</span><span class="operator">&gt;</span><span class="operator">]</span><span class="operator">);</span>
</pre>
<pre>
    <span class="keyword">my</span> <span class="variable">$xml</span> <span class="operator">=</span> <span class="variable">$xs</span><span class="operator">-&gt;</span><span class="variable">XMLout</span><span class="operator">(</span><span class="variable">$hashref</span> <span class="operator">[</span><span class="operator">,</span> <span class="operator">&lt;</span><span class="variable">options</span><span class="operator">&gt;</span><span class="operator">]</span><span class="operator">);</span>
</pre>
<p>(or see <a href="#sax_support">SAX SUPPORT</a> for 'the SAX way').</p>
<p>To catch common errors:</p>
<pre>
    <span class="keyword">use</span> <span class="variable">XML::Simple</span> <span class="string">qw(:strict)</span><span class="operator">;</span>
</pre>
<p>(see <a href="#strict_mode">STRICT MODE</a> for more details).</p>
<p>
</p>
<hr />
<h1><a name="quick_start">QUICK START</a></h1>
<p>Say you have a script called <strong>foo</strong> and a file of configuration options
called <strong>foo.xml</strong> containing this:</p>
<pre>
  &lt;config logdir=&quot;/var/log/foo/&quot; debugfile=&quot;/tmp/foo.debug&quot;&gt;
    &lt;server name=&quot;sahara&quot; osname=&quot;solaris&quot; osversion=&quot;2.6&quot;&gt;
      &lt;address&gt;10.0.0.101&lt;/address&gt;
      &lt;address&gt;10.0.1.101&lt;/address&gt;
    &lt;/server&gt;
    &lt;server name=&quot;gobi&quot; osname=&quot;irix&quot; osversion=&quot;6.5&quot;&gt;
      &lt;address&gt;10.0.0.102&lt;/address&gt;
    &lt;/server&gt;
    &lt;server name=&quot;kalahari&quot; osname=&quot;linux&quot; osversion=&quot;2.0.34&quot;&gt;
      &lt;address&gt;10.0.0.103&lt;/address&gt;
      &lt;address&gt;10.0.1.103&lt;/address&gt;
    &lt;/server&gt;
  &lt;/config&gt;</pre>
<p>The following lines of code in <strong>foo</strong>:</p>
<pre>
  <span class="keyword">use</span> <span class="variable">XML::Simple</span><span class="operator">;</span>
</pre>
<pre>
  <span class="keyword">my</span> <span class="variable">$config</span> <span class="operator">=</span> <span class="variable">XMLin</span><span class="operator">();</span>
</pre>
<p>will 'slurp' the configuration options into the hashref $config (because no
arguments are passed to <code>XMLin()</code> the name and location of the XML file will
be inferred from name and location of the script).  You can dump out the
contents of the hashref using Data::Dumper:</p>
<pre>
  <span class="keyword">use</span> <span class="variable">Data::Dumper</span><span class="operator">;</span>
</pre>
<pre>
  <span class="keyword">print</span> <span class="variable">Dumper</span><span class="operator">(</span><span class="variable">$config</span><span class="operator">);</span>
</pre>
<p>which will produce something like this (formatting has been adjusted for
brevity):</p>
<pre>
  <span class="operator">{</span>
      <span class="string">'logdir'</span>        <span class="operator">=&gt;</span> <span class="string">'/var/log/foo/'</span><span class="operator">,</span>
      <span class="string">'debugfile'</span>     <span class="operator">=&gt;</span> <span class="string">'/tmp/foo.debug'</span><span class="operator">,</span>
      <span class="string">'server'</span>        <span class="operator">=&gt;</span> <span class="operator">{</span>
          <span class="string">'sahara'</span>        <span class="operator">=&gt;</span> <span class="operator">{</span>
              <span class="string">'osversion'</span>     <span class="operator">=&gt;</span> <span class="string">'2.6'</span><span class="operator">,</span>
              <span class="string">'osname'</span>        <span class="operator">=&gt;</span> <span class="string">'solaris'</span><span class="operator">,</span>
              <span class="string">'address'</span>       <span class="operator">=&gt;</span> <span class="operator">[</span> <span class="string">'10.0.0.101'</span><span class="operator">,</span> <span class="string">'10.0.1.101'</span> <span class="operator">]</span>
          <span class="operator">}</span><span class="operator">,</span>
          <span class="string">'gobi'</span>          <span class="operator">=&gt;</span> <span class="operator">{</span>
              <span class="string">'osversion'</span>     <span class="operator">=&gt;</span> <span class="string">'6.5'</span><span class="operator">,</span>
              <span class="string">'osname'</span>        <span class="operator">=&gt;</span> <span class="string">'irix'</span><span class="operator">,</span>
              <span class="string">'address'</span>       <span class="operator">=&gt;</span> <span class="string">'10.0.0.102'</span>
          <span class="operator">}</span><span class="operator">,</span>
          <span class="string">'kalahari'</span>      <span class="operator">=&gt;</span> <span class="operator">{</span>
              <span class="string">'osversion'</span>     <span class="operator">=&gt;</span> <span class="string">'2.0.34'</span><span class="operator">,</span>
              <span class="string">'osname'</span>        <span class="operator">=&gt;</span> <span class="string">'linux'</span><span class="operator">,</span>
              <span class="string">'address'</span>       <span class="operator">=&gt;</span> <span class="operator">[</span> <span class="string">'10.0.0.103'</span><span class="operator">,</span> <span class="string">'10.0.1.103'</span> <span class="operator">]</span>
          <span class="operator">}</span>
      <span class="operator">}</span>
  <span class="operator">}</span>
</pre>
<p>Your script could then access the name of the log directory like this:</p>
<pre>
  <span class="keyword">print</span> <span class="variable">$config</span><span class="operator">-&gt;</span><span class="operator">{</span><span class="string">logdir</span><span class="operator">}</span><span class="operator">;</span>
</pre>
<p>similarly, the second address on the server 'kalahari' could be referenced as:</p>
<pre>
  <span class="keyword">print</span> <span class="variable">$config</span><span class="operator">-&gt;</span><span class="operator">{</span><span class="string">server</span><span class="operator">}</span><span class="operator">-&gt;</span><span class="operator">{</span><span class="string">kalahari</span><span class="operator">}</span><span class="operator">-&gt;</span><span class="operator">{</span><span class="string">address</span><span class="operator">}</span><span class="operator">-&gt;</span><span class="operator">[</span><span class="number">1</span><span class="operator">]</span><span class="operator">;</span>
</pre>
<p>What could be simpler?  (Rhetorical).</p>
<p>For simple requirements, that's really all there is to it.  If you want to
store your XML in a different directory or file, or pass it in as a string or
even pass it in via some derivative of an IO::Handle, you'll need to check out
<a href="#options">OPTIONS</a>.  If you want to turn off or tweak the array folding feature (that
neat little transformation that produced $config-&gt;{server}) you'll find options
for that as well.</p>
<p>If you want to generate XML (for example to write a modified version of
$config back out as XML), check out <code>XMLout()</code>.</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -