标签: xmlreader

xmlreader,获取属性的名称

我想做类似的事情:

stringBuilder.AppendLine("   globalVar." + reader.GetAttribute(i).Name + " = " + reader[i] + "; //add param ");
Run Code Online (Sandbox Code Playgroud)

其中“ reader.GetAttribute(i).Name ”是不起作用的组件。是否有等效的方法来获取属性的名称?

c# xml xmlreader

3
推荐指数
1
解决办法
2879
查看次数

检查xmlReader是否是具体的结束元素

我已经设置了xmlReader并且可以检查某些元素,但是我找不到检查关闭元素的方法,让我说</perls>除了它的开放之外我还想要另外一个case语句,我怎么能这样做?我确信这样的标签不是自动关闭的.

using (XmlReader reader = XmlReader.Create("perls.xml"))
{
    while (reader.Read())
    {
    // Only detect start elements.
    if (reader.IsStartElement())
    {
        // Get element name and switch on it.
        switch (reader.Name)
        {
        case "perls":
            // Detect this element.
            Console.WriteLine("Start <perls> element.");
            break;
        case "article":
            // Detect this article element.
            Console.WriteLine("Start <article> element.");
            // Search for the attribute name on this current node.
            string attribute = reader["name"];
            if (attribute != null)
            {
            Console.WriteLine("  Has attribute name: " + attribute);
            }
            // Next …
Run Code Online (Sandbox Code Playgroud)

c# xml xmlreader

3
推荐指数
1
解决办法
5124
查看次数

如何读取xml字符串忽略标题?

我想读取一个 xml 字符串而忽略标题和注释。

忽略评论很简单,我在这里找到了解决方案。但我没有找到任何解决方案来忽略标题。

让我举个例子吧:

考虑这个xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Some comments -->
<Tag Attribute="3">
    ...
</Tag>
Run Code Online (Sandbox Code Playgroud)

我想将 xml 读取到一个字符串中,只获取元素“标签”和其他元素,但没有“xml 版本”和注释。

元素“标签”只是一个例子。可能存在许多其他人。

所以,我只想要这个:

<Tag Attribute="3">
    ...
</Tag>
Run Code Online (Sandbox Code Playgroud)

我到目前为止的代码:

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Some comments -->
<Tag Attribute="3">
    ...
</Tag>
Run Code Online (Sandbox Code Playgroud)

我没有在 XmlReaderSettings 上找到任何东西来做到这一点。

我是否需要逐个节点地选择我想要的节点?这个设置不存在?

编辑 1: 只是为了恢复我的问题。我需要在 WebService 的 CDATA 中使用 xml 的内容。当我发送评论或 xml 版本时,我收到了 xml 部分的特定错误。所以我假设当我阅读没有版本、标题和评论的 xml 时,我会很高兴。

c# xml xmldocument xmlreader

3
推荐指数
1
解决办法
5130
查看次数

如何让 XmlReader 读取 C# 中的属性?

我有一个包含以下 XML 内容的 XML-Stream:

<WebError Key="A">
  <Message>B</Message>
  <Parameters>
    <Parameter name="C">D</Parameter>
  </Parameters>
</WebError>
Run Code Online (Sandbox Code Playgroud)

我找不到XmlReader读取Key属性的方法,所以reader.NodeTypeisXmlNodeType.Attributereader.LocalNameis "Key"

这就是我初始化我的方式XmlReader

XmlReader.Create(stream, new XmlReaderSettings { CloseInput = true, IgnoreWhitespace = true });
Run Code Online (Sandbox Code Playgroud)

这个读取器然后通过几个方法级别,直到它到达我的解析器函数。

这是我试图让读者阅读该元素的所有替代代码。从代码中剥离了控制结构,因此您只能看到实际调用的函数。

第一次尝试,通过MoveToFirstAttribute()调用移动到属性:

reader.Read(); // true
reader.IsStartElement("WebError"); // true
using (var nodeReader = reader.ReadSubtree()) {
  nodeReader.HasAttributes; // true
  nodeReader.MoveToFirstAttribute(); // false
  nodeReader.Read(); // true
  nodeReader.NodeType; // XmlNodeType.Element
  nodeReader.LocalName; // "WebError"
  using (var subLevelReader = nodeReader.ReadSubtree()) {
  }
  nodeReader.Read(); // …
Run Code Online (Sandbox Code Playgroud)

c# xmlreader xml-attribute

3
推荐指数
1
解决办法
1728
查看次数

在 PHP 中不使用太多内存的情况下读取/写入大型 XML

我正在尝试查询一些非常大的 XML 文件(最多几个演出),检查它们的格式是否正确,然后将它们写入硬盘。看起来很容易,但由于它们太大了,我无法在内存中保存整个文档。因此,我的问题是: 当可用 RAM 少于一个文档的大小时,如何读取、检查和写入大型 XML 文件?

我的方法:使用 XMLReader 逐个读取它(如果成功,文档必须格式良好)并使用 XMLWriter 进行写入。问题:XMLWriter 似乎将所有内容都存储在 RAM 中,直到文档完成。DOM Documents 和 SimpleXML 似乎做同样的事情。还有什么我可以尝试的吗?

php xml xmlwriter xmlreader

3
推荐指数
1
解决办法
2270
查看次数

使用 PHP XMLReader 检测 XML 自关闭标签

我想使用 XMLReader 解析一个 XML 文档。我有一个带有所有常量的案例开关。但是,如果标签是自关闭的 XMLReader 只触发 ELEMENT,而不是像预期的那样触发 ELEMENT 和 END_ELEMENT。

通过类属性 $isEmptyElement 进行检测也不起作用,因为该标记具有属性。

因此我的问题是:如何在 PHP 中使用 XMLReader 检测自关闭的 XML 标记?

相关但没有解决方案: XmlReader - 自关闭元素不会触发 EndElement 事件?

示例节点:

<mynode name="somenamestring" code="intstring" option="intstring3"/>
Run Code Online (Sandbox Code Playgroud)

我的代码:

$xmlReader->open($url,NULL);
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'UTF-8');
$xmlWriter->setIndent(true);
$xmlWriter->setIndentString('    ');
while ($xmlReader->read()) {
    switch ($xmlReader->nodeType) {
        case 1: #element
            $xmlWriter->startElement($xmlReader->name);
            if ($xmlReader->hasAttributes) {
                while ($xmlReader->moveToNextAttribute()) {
                    $xmlWriter->writeAttribute($xmlReader->name,$xmlReader->value);
                }
            }
            if ($xmlReader->isEmptyElement) {
                $xmlWriter->endElement();
            }
            break;

        case 3: #text
            $xmlWriter->text($xmlReader->value);
            break;

        case 4: #cdata
            $xmlWriter->writeCData($xmlReader->value);
            break; …
Run Code Online (Sandbox Code Playgroud)

php xml xmlreader libxml2

3
推荐指数
1
解决办法
1110
查看次数

如何异步读取 XML 文件?

我正在编写一个用于数据后处理的 Windows 窗体应用程序。我有一个面板,允许拖放文件。XML 文件将非常大(足以减慢 UI 的速度)。因此我想异步读取文件。到目前为止,对于应用程序的这一部分,我有两种方法:

namespace myApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void DragDropPanel_DragEnter(object sender, DragEventArgs e)
        {
            // Trigger the Drag Drop Event
            e.Effect = DragDropEffects.Copy;
        }

        private async void DragDropPanel_DragDrop(object sender, DarEventArgs e)
        {
            // Identifiers used are:
            string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
            string filePath = filePaths[0],
                 fileName = System.IO.Path.GetFileName(filePath);

             // Read in the file asynchronously
             XmlReader reader = XmlReader.Create(filePath);
             //reader.Settings.Async = true; // ** (SECOND ERROR) ** \\ …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous xmlreader

3
推荐指数
1
解决办法
2574
查看次数

PHP XMLReader获取父节点?

在使用XMLReader方法解析XML文件时,如何获取元素的父节点?

$xml = new XMLReader();
$xml->XML($xmlString);
while($xml->read())
{

$xml->localName; // gives tag name
$xml->value; // gives tag value

// how do I access the parent of this element 
}
Run Code Online (Sandbox Code Playgroud)

php parsing xmlreader

2
推荐指数
1
解决办法
2万
查看次数

获取xml属性值为string []

我的xml文件有这样的东西: 那么如何递归获取属性的所有值并将它们添加到或.也许是一个foreach循环?
...
<Keyword name = "if" />
<Keyword name = "else" />
<Keyword name = "is" />
...

nameList<string>string[]


我跟着codemeit,我不断收到错误:Data at the root level is invalid. Line 1, position 1.我的xml文件是
<KeyWords>
...
<KeyWord name = "if" />
...
</KeyWord>


新问题,The '\' character, hexadecimal value 0x5C, cannot be included in a name.但相同的文件.

c# xml xmlreader

2
推荐指数
1
解决办法
1253
查看次数

ExtJS的XmlReader字段映射

我无法让Ext.data.XmlReader的CDATA字段映射生效.

 <script>
var store = new Ext.data.Store({
    url: '../data/data.xml',
    // specify a XmlReader  
    reader: new Ext.data.XmlReader({ 
    record: 'entry', 
    fields:[
            { name: 'field1', type: 'date', mapping:'field1'},  
            { name: 'field2', type: 'string', mapping:'field2'} 
           ] 
    }),
    listeners:{load:function(store,recs)
              {  //alert row1.field1 and row1.field2
                 var s = 'field1 = '+recs[0].get('field1') + '\nfield2 = '+recs[0].get('field2');
                 alert(s);
              }
     }
   });

store.load();
 </script>
Run Code Online (Sandbox Code Playgroud)

这是data.xml中的XML内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom"> 
     <entry>  
       <field1>01/01/2006</field1>
       <field2>
           <![CDATA[
               <Comment>
                  Test
               </Comment>
             ]]>
       </field2>
      </entry>  
     </feed>
Run Code Online (Sandbox Code Playgroud)

当商店完成装货.警报(来自监听器)显示如下内容:

field1 = Sun Jan 01 2006 00:00:00 …
Run Code Online (Sandbox Code Playgroud)

javascript grid extjs xmlreader record

2
推荐指数
1
解决办法
2532
查看次数